﻿using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;

namespace jogoLudumdare
{
   
    class Fase2 : State
    {
        public void Restart()
        {
            littleTimer = 0;

            littleTimer = 0;

            LargurImagemPoltrona = 0;
            LargurImagemGR = 708 - 236;

            TempoSofa = 0;
            TempoArmario = 0;

            Sortiou = false;
            ParaTempoSofa = true;
            ParaTempoArmario = true;
            camaSlc = false;
            BilheteEncontrado = false;
            NaoEntraMais = false;
            tempozinho = 0;
        }
        Itens Fundo, PedacoVestido, Armario,Poltrona, Tesoura, Lanterna, Chave, Bilhete;
       
        int littleTimer = 0;
        
        int LargurImagemPoltrona = 0;
        int LargurImagemGR = 708-236;
        Random SorteioIndice= new Random();
        int TempoSofa=0;
        int TempoArmario = 0;
        Texture2D Bilhete2PORT, Bilhete2ING,LanternaSl, TesouraSl, ChaveSl ;
        int indice;
        public static bool Sortiou = false;
        bool ParaTempoSofa = true;
        bool ParaTempoArmario = true;
        bool camaSlc = false;
        bool BilheteEncontrado=false;
        bool NaoEntraMais = false;
        int tempozinho = 0;

        public Fase2(ContentManager content)
        {

           
                
            Fundo = new Itens(content.Load<Texture2D>(@"Fase2/Fase_2"),new Rectangle(0,0,800,600), false);
            PedacoVestido = new Itens(content.Load<Texture2D>(@"Fase1/pedacoPano"), new Rectangle(10, 300, 55, 34), false);
            
            Armario = new Itens(content.Load<Texture2D>(@"Fase2/armarioSprite"), new Rectangle(10, 200, 708,639), false);
            Lanterna = new Itens(content.Load<Texture2D>(@"Fase2/laterna"), new Rectangle(670,10,93,63), false);
            Chave = new Itens(content.Load<Texture2D>(@"Fase2/chave"), new Rectangle(670, 110,85,63), false);
            Tesoura = new Itens(content.Load<Texture2D>(@"Fase2/tesoura"), new Rectangle(670, 210,96,63), false);
            
            Poltrona = new Itens(content.Load<Texture2D>(@"Fase2/sofa"), new Rectangle(280, 330, 723,142), false);
            Bilhete = new Itens(content.Load<Texture2D>(@"Fase2/bilhete"), new Rectangle(0, 500, 100, 100), false);
            Bilhete2ING = content.Load<Texture2D>(@"Fase2/bilhete_seleção_ING");
            Bilhete2PORT = content.Load<Texture2D>(@"Fase2/bilhete_seleção_port");
            TesouraSl = content.Load<Texture2D>(@"Fase2/tesouraSelect");
            ChaveSl = content.Load<Texture2D>(@"Fase2/chaveSelect");
            LanternaSl = content.Load<Texture2D>(@"Fase2/laternaSelect");

          
        }
        
        public void Update(GameTime gameTime, MouseState mouse)
        {
            //if (BilheteEncontrado)
            //{
            //    Bilhete.Posicao.X = 0;
            //    Bilhete.Posicao.Y = 0;
            //}
            Animacao();
            if (!Sortiou)
            {
                indice = SorteioIndice.Next(1, 4);
                Sortiou = true;
            }

            switch (indice)
            {
            case 1:Bilhete.Posicao.X=124;
                   Bilhete.Posicao.Y=338;
                  break;

            case 2: Bilhete.Posicao.X = 327;
                  Bilhete.Posicao.Y = 370;
                  break;

            case 3: Bilhete.Posicao.X = 700;
                  Bilhete.Posicao.Y = 500;
                  break;
            }

            BotaoClicado(mouse);
            ObjetoClicado(mouse);
            littleTimer++;
           
        }
       public void Draw(SpriteBatch spriteBatch, MouseState mouse)
        {
           Restart();
           spriteBatch.Draw(Fundo.Imagem, Fundo.Posicao, Color.White);           
           spriteBatch.Draw(PedacoVestido.Imagem, PedacoVestido.Posicao, Color.White);
          
           MudancaSelecionamento(spriteBatch);
           Animacao();
           
           if (!Lanterna.Coletado)
           {
               spriteBatch.Draw(Lanterna.Imagem, Lanterna.Posicao, Color.White);
           }
           if (!Chave.Coletado)
           {
               spriteBatch.Draw(Chave.Imagem, Chave.Posicao, Color.White);
           }
           if (!Tesoura.Coletado)
           {
               spriteBatch.Draw(Tesoura.Imagem, Tesoura.Posicao, Color.White);
           }

           spriteBatch.Draw(Armario.Imagem, new Rectangle(Armario.Posicao.X, Armario.Posicao.Y, Armario.Imagem.Width / 3, Armario.Imagem.Height), new Rectangle(LargurImagemGR, 0, Armario.Imagem.Width / 3, Armario.Imagem.Height), Color.White);
           spriteBatch.Draw(Poltrona.Imagem, new Rectangle(Poltrona.Posicao.X, Poltrona.Posicao.Y, Poltrona.Imagem.Width/3, Poltrona.Imagem.Height), new Rectangle(LargurImagemPoltrona, 0, Poltrona.Imagem.Width/3, Poltrona.Imagem.Height), Color.White);
           DesenhaBilhete(spriteBatch);
          
           
           GanhaItem(spriteBatch, mouse);
        }

       public void GanhaItem(SpriteBatch spriteBatch, MouseState mouse)
       {
           //if (mouse.X > PedacoVestido.Posicao.X && mouse.X < PedacoVestido.Posicao.X + PedacoVestido.Imagem.Width &&
           //    mouse.Y > PedacoVestido.Posicao.Y && mouse.Y < PedacoVestido.Posicao.Y + PedacoVestido.Imagem.Height &&
           //    mouse.LeftButton == ButtonState.Pressed)
           //{

           //    nextState = GameState.Fase1;
           //}
         
  }

    
           public void BotaoClicado(MouseState mouse )
           {
               if (mouse.X > Chave.Posicao.X && mouse.X < Chave.Posicao.X + Chave.Imagem.Width &&
                   mouse.Y > Chave.Posicao.Y && mouse.Y < Chave.Posicao.Y + Chave.Imagem.Height &&
                   mouse.LeftButton== ButtonState.Pressed)
               {
                   Chave.Coletado = true;
                   Lanterna.Coletado = false;
                   Tesoura.Coletado = false; 
                  
               }
            
               else if (mouse.X > Lanterna.Posicao.X && mouse.X < Lanterna.Posicao.X + Lanterna.Imagem.Width &&
                   mouse.Y > Lanterna.Posicao.Y && mouse.Y < Lanterna.Posicao.Y + Lanterna.Imagem.Height &&
                   mouse.LeftButton == ButtonState.Pressed)
               {
                   Lanterna.Coletado = true;
                   Tesoura.Coletado = false;
                   Chave.Coletado = false;
                

               }

               else if (mouse.X > Tesoura.Posicao.X && mouse.X < Tesoura.Posicao.X + Tesoura.Imagem.Width &&
                   mouse.Y > Tesoura.Posicao.Y && mouse.Y < Tesoura.Posicao.Y + Tesoura.Imagem.Height &&
                   mouse.LeftButton == ButtonState.Pressed)
               {
                   Tesoura.Coletado = true;
                   Chave.Coletado = false;
                   Lanterna.Coletado = false;

               }

              

           } 
        public void MudancaSelecionamento(SpriteBatch spriteBath)
        {
            if (Tesoura.Coletado)
               {
                   spriteBath.Draw(TesouraSl, new Vector2(Tesoura.Posicao.X, Tesoura.Posicao.Y), Color.White);
               }
            
            if (Lanterna.Coletado)
            {
                spriteBath.Draw(LanternaSl, new Vector2(Lanterna.Posicao.X, Lanterna.Posicao.Y), Color.White);
            }
            if (Chave.Coletado)
            {
                spriteBath.Draw(ChaveSl, new Vector2(Chave.Posicao.X, Chave.Posicao.Y), Color.White);
            }
        }

           public void ObjetoClicado(MouseState mouse)
           {
               
               if (mouse.X > Poltrona.Posicao.X && mouse.X < Poltrona.Posicao.X + Poltrona.Imagem.Width && mouse.Y > Poltrona.Posicao.Y && mouse.Y < Poltrona.Posicao.Y + Poltrona.Imagem.Height && mouse.LeftButton== ButtonState.Pressed && Tesoura.Coletado)
               {
                   Poltrona.Coletado = true;
                   ParaTempoSofa = false;
               }
               if (mouse.X > Bilhete.Posicao.X && mouse.X < Bilhete.Posicao.X + Bilhete.Imagem.Width && mouse.Y > Bilhete.Posicao.Y && mouse.Y < Bilhete.Posicao.Y + Bilhete.Imagem.Height && mouse.LeftButton == ButtonState.Pressed)
               {
                   Bilhete.Coletado = true;
                   nextState = GameState.Fase3;
                   
               }
               if (mouse.X > Armario.Posicao.X && mouse.X < Armario.Posicao.X + Armario.Imagem.Width && mouse.Y > Armario.Posicao.Y && mouse.Y < Armario.Posicao.Y + Armario.Imagem.Height && mouse.LeftButton==ButtonState.Pressed && Chave.Coletado)
               {
                   Armario.Coletado = true;
                   ParaTempoArmario = false;
               }
               if (mouse.X > 504 && mouse.X <682 && mouse.Y >438 && mouse.Y < 546 && mouse.LeftButton == ButtonState.Pressed && Lanterna.Coletado)
               {
                   camaSlc = true;
                   
               }
           }

           public void Animacao()
           {
               
               if (Poltrona.Coletado)
               {
                   if (!ParaTempoSofa)
               {
                   TempoSofa++;
               }
               else if (ParaTempoSofa)
               {
                   TempoSofa = 0;
               }
                   
                   if (TempoSofa >0 && TempoSofa <30)
                   {
                       LargurImagemPoltrona = 241;
                   }
                   if (TempoSofa >= 30 && TempoSofa < 90)
                   {
                       LargurImagemPoltrona = 481;
                       ParaTempoSofa = true;
                   }

               }

               if (Armario.Coletado)
               {
                   if (!ParaTempoArmario)
                   {
                       TempoArmario++;
                   }
                   else if (ParaTempoArmario)
                   {
                       TempoArmario = 0;
                   }

                   if (TempoArmario > 0 && TempoArmario < 30)
                   {
                       LargurImagemGR = 708-236;
                   }
                   if (TempoArmario >= 30 && TempoArmario < 90)
                   {
                       LargurImagemGR = (708-236)-236;
                       //Tempo = 0;
                       ParaTempoArmario = true;
                       
                   }

               }
}
               public void DesenhaBilhete(SpriteBatch spriteBatch)
               {
                   if (!NaoEntraMais)
                   {
                       if (LargurImagemGR == (708 - 236) - 236)
                       {
                           ParaTempoArmario = true;
                           if (indice == 1)
                           {
                               spriteBatch.Draw(Bilhete.Imagem, Bilhete.Posicao, Color.White);
                               BilheteEncontrado = true;
                               NaoEntraMais = true;
                           }
                       }

                       if (LargurImagemPoltrona == 481)
                       {
                           ParaTempoSofa = true;
                           if (indice == 2)
                           {
                               spriteBatch.Draw(Bilhete.Imagem, Bilhete.Posicao, Color.White);
                               BilheteEncontrado = true;
                               NaoEntraMais = true;
                           }
                       }
                       if (camaSlc)
                       {
                           if (indice == 3)
                           {
                               spriteBatch.Draw(Bilhete.Imagem, Bilhete.Posicao, Color.White);
                               BilheteEncontrado = true;
                               NaoEntraMais = true;
                           }
                       }
                   }
                    if (BilheteEncontrado)
                    {
                        //spriteBatch.Draw(Game1.FundoGanhaItem, Vector2.Zero, Color.White);
                        //Bilhete.Posicao.X = 0;
                        //Bilhete.Posicao.Y = 0;

                        if (Game1.IdiomaAtual == Game1.EstadoIdioma.Ingles)
                        {
                            Bilhete.Imagem = Bilhete2ING;
                        }
                        if (Game1.IdiomaAtual == Game1.EstadoIdioma.Portugues)
                        {
                            Bilhete.Imagem = Bilhete2PORT;
                        }
                        spriteBatch.Draw(Bilhete.Imagem, new Vector2(100, 20), Color.White);

                        tempozinho++;

                        if (tempozinho > 200)
                        {
                            nextState = GameState.Fase3;
                        }
                    }
                   
               }
           


       
    }
}
